import { dateFormat, numberFormat } from '@/utils/tools';
import { Vue } from 'vue-property-decorator';
import XEUtils from 'xe-utils';
import Dict from '../dict/index';
export default class CentralSupervision extends Vue {
    Dict = new Dict();

    // 产品统计字段
    fundsTableColumns = [
        // 确定无勾选框  TODO
        { title: '序号', type: 'seq', width: '60px', fixed: 'left' },
        // TODO 产品代码/名称
        { title: '产品代码/名称', field: 'dictFundCodes', minWidth: '150px', render: value => this.formatDictFundCodes(value) },
        { title: '投资经理', field: 'investmentManager', minWidth: '100px' },
        {
            title: '产品类型',
            field: 'fundType',
            minWidth: '100px',
            render: value => Dict.fundTypePojo[value],
        },
        { title: '超限汇总', field: 'overrunSum', minWidth: '100px' },
        // 当为历史查询时，当日新增、当日恢复 字段隐藏。
        { title: '当日新增', field: 'increased', minWidth: '100px' },
        { title: '当日恢复', field: 'recover', minWidth: '100px' },
        { title: '超限5天以内', field: 'oneTofive', minWidth: '120px' },
        { title: '超限10天以内', field: 'sexTonine', minWidth: '120px' },
        { title: '超限15天以内', field: 'tenTofifteen', minWidth: '120px' },
        { title: '超限15天以上', field: 'fifteenUp', minWidth: '120px' },
    ];

    // 产品统计字段
    fundsTableColumnsHistory = [
        { title: '序号', type: 'seq', width: '60px', fixed: 'left' },
        { title: '产品代码/名称', field: 'dictFundCodes', minWidth: '150px', render: value => this.formatDictFundCodes(value) },
        { title: '投资经理', field: 'investmentManager', minWidth: '100px' },
        {
            title: '产品类型',
            field: 'fundType',
            minWidth: '100px',
            render: value => Dict.fundTypePojo[value],
        },
        { title: '超限汇总', field: 'overrunSum', minWidth: '100px' },
        { title: '超限5天以内', field: 'oneTofive', minWidth: '120px' },
        { title: '超限10天以内', field: 'sexTonine', minWidth: '120px' },
        { title: '超限15天以内', field: 'tenTofifteen', minWidth: '120px' },
        { title: '超限15天以上', field: 'fifteenUp', minWidth: '120px' },
    ];

    // 投资经理字段
    investmentManagerTableColumns = [
        // 确定无勾选框  TODO
        { title: '序号', type: 'seq', width: '60px', fixed: 'left' },
        { title: '投资经理', field: 'investmentManager' },
        { title: '超限产品数量', field: 'manageProductCount' },
        // { title: '超限汇总', field: 'c' },
        { title: '超限5天以内', field: 'oneToFive' },
        { title: '超限10天以内', field: 'sexToNine' },
        { title: '超限15天以内', field: 'tenTofifteen' },
        { title: '超限15天以上', field: 'fifteenUp' },
        { title: '超3天未反馈', field: 'overThreeFeedback' },
        { title: '80%调整期', field: 'overEight' },
        { title: '距调整期前2日', field: 'adjDistanceTwoDays' },
        { title: '未及时调整', field: 'outAdjDays' },
        { title: '其他调整期内', field: 'otherAdjDay' },
        { title: '超限条款数合计', field: 'sumCount' },
    ];

    // 超限指标明细字段
    transfiniteTableColumns = [
        {
            type: 'checkbox',
            selectedAll: false,
            fixed: 'left',
            align: 'center',
            width: 60,
        },
        { title: '事件编号', field: 'overrunEventId', minWidth: '100px', fixed: 'left' },
        { title: '事件状态', field: 'eventStatus', minWidth: '100px', render: value => Dict.eventStatusPojo[value], fixed: 'left' }, //0-未发起1-调整中2-已关闭
        {
            title: '反馈情况',
            field: 'feedbackStatus',
            minWidth: '100px',
            render: value => Dict.feedbackStatusPojo[value],
            fixed: 'left',
        }, // 0-待反馈1-已反馈
        {
            title: '超限事件分布',
            field: 'adjustProgerss',
            minWidth: '120px',
            render: (value, record) => record.adjustProgerssName?.join(',') || '--',
            fixed: 'left',
        },
        { title: '当前指标状态', field: 'triggerType', minWidth: '120px', render: value => Dict.triggerTypePojo[value] },
        { title: '是否偏严', field: 'strict', minWidth: '100px', render: value => Dict.strictPojo[value] },
        { title: '发起日期', field: 'approveDate', minWidth: '100px', render: value => dateFormat(value) },
        { title: '产品代码/名称', field: 'dictFundCodes', minWidth: '150px', render: value => this.formatDictFundCodes(value) },
        // { title: '产品代码', field: 'fundProductCode', minWidth: '100px' },
        // { title: '产品名称', field: 'fundNameSt', minWidth: '100px' },
        { title: '投资经理', field: 'investmentManager', minWidth: '100px' },
        { title: '产品类型', field: 'fundType', minWidth: '100px', render: value => Dict.fundTypePojo[value] }, // TODO
        { title: '条款来源', field: 'articeInfo', minWidth: '100px' },
        { title: '条款原文', field: 'clauseCode', minWidth: '100px' },
        { title: '系统配置条目', field: 'entryName', minWidth: '120px' },
        { title: '估值日期', field: 'tradeDate', minWidth: '100px', render: value => dateFormat(value) },
        {
            title: '控制阈值',
            field: 'thresholdValue',
            minWidth: '100px',
            render: (value, row) => (value != undefined ? Dict.compareTypeStrPojo[row.compareType] + numberFormat(value, 2) : '--'),
        },
        { title: '当前计算值', field: 'result', minWidth: '100px' },
        { title: '首次超限日期', field: 'ctDate', minWidth: '120px', render: value => dateFormat(value) },
        { title: '连续超限天数', field: 'prohibitionDate', minWidth: '120px' },
        { title: '超限调整天数', field: 'insideDays', minWidth: '120px' },
        { title: '超限原因概述', field: 'overrunInfo', minWidth: '120px' },
        { title: '最新反馈日期', field: 'feedbackDate', minWidth: '120px', render: value => dateFormat(value) },
        // { title: '调整方案', field: 'detail', minWidth: '100px',  },
        { title: '发起类别', field: 'approveType', minWidth: '100px', render: value => Dict.approveTypePojo[value] }, // 0-人工录入（指系统不支持的指标通过人工录入发起事件）1-人工发起（系统支持的指标，未设置自动发起，须人工发起）2-系统自动
        { title: '关闭日期', field: 'closeDate', minWidth: '100px', render: value => dateFormat(value) },
        { title: '关闭类型', field: 'closeType', minWidth: '100px', render: value => Dict.closeTypePojo[value] }, // 0：人工关闭1：自动关闭
        { title: '关闭原因', field: 'closeReason', minWidth: '100px' },
        { title: '主办人', field: 'sponsor', minWidth: '100px' },
        { title: '发起人', field: 'initiator', minWidth: '100px' },
        { field: 'operation', fixed: 'right', title: '操作', width: '150px', align: 'center' },
    ];

    // 在超限基础上删除部分字段
    strictCheckTableColumns = [
        {
            type: 'checkbox',
            selectedAll: false,
            fixed: 'left',
            align: 'center',
            width: 60,
        },
        { title: '事件编号', field: 'overrunEventId', minWidth: '100px', fixed: 'left' },
        {
            title: '事件状态',
            field: 'eventStatus',
            minWidth: '100px',
            render: value => Dict.eventStatusPojo[value],
            fixed: 'left',
        }, //0-未发起1-调整中2-已关闭
        {
            title: '反馈情况',
            field: 'feedbackStatus',
            minWidth: '100px',
            render: value => Dict.feedbackStatusPojo[value],
            fixed: 'left',
        }, // 0-待反馈1-已反馈
        {
            title: '超限事件分布',
            field: 'adjustProgerss',
            minWidth: '120px',
            render: (value, record) => record.adjustProgerssName?.join(',') || '--',
            fixed: 'left',
        },
        {
            title: '当前指标状态',
            field: 'triggerType',
            minWidth: '120px',
            render: value => Dict.triggerTypePojo[value],
        },
        // { title: '是否偏严', field: 'strict', minWidth: '100px', align:'center', render: value => Dict.strictPojo[value] },
        { title: '发起日期', field: 'approveDate', minWidth: '100px', render: value => dateFormat(value) },
        {
            title: '产品代码/名称',
            field: 'dictFundCodes',
            minWidth: '150px',

            render: value => this.formatDictFundCodes(value),
        },
        // { title: '产品代码', field: 'fundProductCode', minWidth: '100px' },
        // { title: '产品名称', field: 'fundNameSt', minWidth: '100px' },
        { title: '投资经理', field: 'investmentManager', minWidth: '100px' },
        // { title: '产品类型', field: 'fundType', minWidth: '100px',align:'center', render: value => Dict.fundTypePojo[value], },
        { title: '条款来源', field: 'articeInfo', minWidth: '100px' },
        { title: '条款原文', field: 'clauseCode', minWidth: '100px' },
        { title: '系统配置条目', field: 'entryName', minWidth: '120px' },
        { title: '估值日期', field: 'tradeDate', minWidth: '100px', render: value => dateFormat(value) },
        {
            title: '控制阈值',
            field: 'thresholdValue',
            minWidth: '100px',
            render: (value, row) => (value != undefined ? Dict.compareTypeStrPojo[row.compareType] + numberFormat(value, 2) : '--'),
        },
        { title: '计算值', field: 'result', minWidth: '100px' },
        { title: '首次超限日期', field: 'ctDate', minWidth: '120px', render: value => dateFormat(value) },
        { title: '连续超限天数', field: 'prohibitionDate', minWidth: '120px' },
        { title: '超限调整天数', field: 'insideDays', minWidth: '120px' },
        { title: '超限原因概述', field: 'overrunInfo', minWidth: '120px' },
        { title: '最新反馈日期', field: 'feedbackDate', minWidth: '120px', render: value => dateFormat(value) },
        // { title: '调整方案', field: 'detail', minWidth: '100px',  },
        // { title: '发起类别', field: 'approveType', minWidth: '100px', align:'center', render: value => Dict.approveTypePojo[value] }, // 0-人工录入（指系统不支持的指标通过人工录入发起事件）1-人工发起（系统支持的指标，未设置自动发起，须人工发起）2-系统自动
        // { title: '关闭日期', field: 'closeDate', minWidth: '100px', align:'center', render: value => dateFormat(value) },
        // { title: '关闭类型', field: 'closeType', minWidth: '100px', align:'center', render: value => Dict.closeTypePojo[value] }, // 0：人工关闭1：自动关闭
        // { title: '关闭原因', field: 'closeReason', minWidth: '100px' },
        { title: '主办人', field: 'sponsor', minWidth: '100px' },
        // { title: '发起人', field: 'initiator', minWidth: '100px' },
        { field: 'operation', fixed: 'right', title: '操作', align: 'center', width: '150px' },
    ];

    // 人工处理
    transfiniteCheckManualTableColumns = [
        {
            type: 'checkbox',
            selectedAll: false,
            fixed: 'left',
            align: 'center',
            width: 60,
        },
        { title: '事件编号', field: 'overrunEventId', minWidth: '100px', fixed: 'left' },
        { title: '事件状态', field: 'eventStatus', minWidth: '100px', render: value => Dict.eventStatusPojo[value], fixed: 'left' }, //0-未发起1-调整中2-已关闭
        {
            title: '反馈情况',
            field: 'feedbackStatus',
            minWidth: '100px',
            render: value => Dict.feedbackStatusPojo[value],
            fixed: 'left',
        }, // 0-待反馈1-已反馈
        // { title: '超限事件分布', field: 'adjustProgerss', minWidth: '120px', align:'center', render: value => Dict.adjustProgerssPojo[value] },
        { title: '当前指标状态', field: 'triggerType', minWidth: '120px', render: value => Dict.triggerTypePojo[value] },
        // { title: '是否偏严', field: 'strict', minWidth: '100px', align:'center', render: value => Dict.strictPojo[value] },
        { title: '发起日期', field: 'approveDate', minWidth: '100px', render: value => dateFormat(value) },
        { title: '产品代码/名称', field: 'dictFundCodes', minWidth: '150px', render: value => this.formatDictFundCodes(value) },
        // { title: '产品代码', field: 'fundProductCode', minWidth: '100px' },
        // { title: '产品名称', field: 'fundNameSt', minWidth: '100px' },
        { title: '投资经理', field: 'investmentManager', minWidth: '100px' },
        // TODO 新增人工事件页面
        { title: '指标说明', field: 'entryName', minWidth: '100px' }, // 新增
        { title: '事件来源', field: 'articeInfo', minWidth: '100px' }, // 新增
        { title: '事件说明', field: 'clauseCode', minWidth: '100px' }, // 新增

        // { title: '产品类型', field: 'fundType', minWidth: '100px',align:'center',render: value => Dict.fundTypePojo[value], }, // TODO
        // { title: '条款来源', field: 'articeInfo', minWidth: '100px' },
        // { title: '条款原文', field: 'clauseCode', minWidth: '100px' },
        // { title: '系统配置条目', field: 'entryName', minWidth: '120px' },
        { title: '估值日期', field: 'tradeDate', minWidth: '100px', render: value => dateFormat(value) },
        {
            title: '控制阈值',
            field: 'thresholdValue',
            minWidth: '100px',
            render: (value, row) => (value != undefined ? Dict.compareTypeStrPojo[row.compareType] + numberFormat(value, 2) : '--'),
        },
        { title: '当前计算值', field: 'result', minWidth: '100px' },
        { title: '最后调整日期', field: 'lastAdjustDate', minWidth: '120px', render: value => dateFormat(value) },
        // { title: '最后调整日期', field: 'closeDate', minWidth: '100px', align:'center', render: value => dateFormat(value) },// 新增

        // { title: '首次超限日期', field: 'ctDate', minWidth: '120px', align:'center', render: value => dateFormat(value) },
        { title: '连续超限天数', field: 'prohibitionDate', minWidth: '120px' },
        { title: '超限调整天数', field: 'insideDays', minWidth: '120px' },
        // { title: '超限原因概述', field: 'overrunInfo', minWidth: '120px' },
        { title: '最新反馈日期', field: 'feedbackDate', minWidth: '120px', render: value => dateFormat(value) },
        // { title: '调整计划', field: 'detail', minWidth: '100px',  },
        // { title: '发起类别', field: 'approveType', minWidth: '100px', align:'center', render: value => Dict.approveTypePojo[value] }, // 0-人工录入（指系统不支持的指标通过人工录入发起事件）1-人工发起（系统支持的指标，未设置自动发起，须人工发起）2-系统自动
        // { title: '关闭日期', field: 'closeDate', minWidth: '100px', align:'center', render: value => dateFormat(value) },
        { title: '关闭类型', field: 'closeType', minWidth: '100px', render: value => Dict.closeTypePojo[value] }, // 0：人工关闭1：自动关闭
        { title: '关闭原因', field: 'closeReason', minWidth: '100px' },
        // { title: '主办人', field: 'sponsor', minWidth: '100px' },
        { title: '发起人', field: 'initiator', minWidth: '100px' },
        { field: 'operation', fixed: 'right', title: '操作', align: 'center', minWidth: '200px' },
    ];

    // 格式化产品代码
    private formatDictFundCodes(cellValue): string {
        let valueStr = XEUtils.map(cellValue, item => {
            if (item) {
                return item.dictKey + '(' + item.dictKeyName + ')';
            } else {
                return '--';
            }
        });
        return valueStr.toString();
    }
}
